#ifndef NODO_H
#define NODO_H

typedef unsigned int u32;

typedef struct sNodo *Nodo;

typedef struct sNetwork *Network;

typedef struct sPath *Path;

Network
crear_network(void);

void
destruir_network(Network network);

void
agregar_nodo(Network network, Nodo nodo);

Nodo
obtener_nodo(Network network, u32 label);

void
agregar_lado(Network network, u32 padre, u32 hijo, u32 capacidad);

Nodo
nodo_create(u32 label);

void
destruir_nodo(Nodo nodo);

void
agregar_nodo_fwd(Nodo nodo, Nodo fwd, u32 capacidad);

Path
crear_path(Network network);

void
destruir_path(Path path);

void
agregar_nodo_path(Path path, Nodo nodo, u32 capacidad);

Nodo
path_siguiente(Path path);

int
nodo_en_path(Path path, Nodo nodo);

void
crear_bfs(Path path);

void
imprimir_camino_y_flujo(Path path);

#endif